﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLT_BLL;
using QLT_Public;
using QLThuoc_report;

namespace GiaoDien
{
    public partial class HoaDon : DevExpress.XtraEditors.XtraForm
    {
        public HoaDon()
        {
            InitializeComponent();
        }

        Thuoc_BLL thuoc_bll = new Thuoc_BLL();
        
        BindingList<DanhSachThuoc> danhsach=new BindingList<DanhSachThuoc>();
        public void LayDanhSach()
        {
            int maThuoc, soLuong = int.Parse(txt_SoLuong.Text);
            double giaTien;
            string tenThuoc,donViTinh;
            maThuoc =Convert.ToInt32( gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Mã Thuốc"));
            giaTien = Convert.ToDouble(gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Giá Tiền"));
            tenThuoc=gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Tên Thuốc").ToString();
            donViTinh = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Đơn Vị").ToString();
            //GhiChu = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Ghi Chú").ToString();
            danhsach.Add(new DanhSachThuoc(maThuoc, tenThuoc,donViTinh,soLuong,giaTien));
        }
        private void HoaDon_Load(object sender, EventArgs e)
        {
        gridControl_DanhSachThuoc.DataSource = thuoc_bll.Load_Thuoc_BanThuoc();
            
            gridControl_DanhSachThuocDaChon.DataSource = danhsach;
            Xoa.Enabled = false;
            btn_TinhTien.Enabled = false;
            btnThanhToan.Enabled = false;
        }

        private void btnThem_Click(object sender, EventArgs e)
        {     
            int kt=Convert.ToInt32(gridView2.RowCount),ktSoLuong=Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Số Lượng")),soLuongBan=int.Parse(txt_SoLuong.Text);
            if (ktSoLuong < soLuongBan)
                XtraMessageBox.Show("Quá số lượng tồn trong kho!","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
            if (kt == 0 && ktSoLuong > 0 && ktSoLuong>soLuongBan)// lưới chưa có dữ liệu và số lượng tồn>0
            {
                LayDanhSach();
                txtsoThuoc.Text = gridView2.RowCount.ToString();
            }
            else
                if (ktSoLuong < 1)
                {
                    XtraMessageBox.Show("Thuốc đã hết trong kho!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            int maThuoc = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Mã Thuốc"));// lấy giá trị mã thuốc ở danh sách thuốc từ csdl
            if (kt > 0)// khi lưới đã có >1 bản ghi thì bắt đầu chạy
            {
                int d=0,mathuoc2=0;
                
                for (int i = 0; i <= gridView2.RowCount; i++)
                {
                    mathuoc2 = Convert.ToInt32(gridView2.GetRowCellValue(i, "MaThuoc"));// lấy giá trị mã thuốc ở mục thuốc đã chọn
                    if (maThuoc == mathuoc2)
                    {
                        d = d + 1;// biến đêm tăng lên 1 nếu có bản ghi trùng trong lưới dánh sách đã chọn
                    }
                }
                if (d == 0 && ktSoLuong > 0 && ktSoLuong > soLuongBan)// nếu ko có thì lấy dữ liệu sang
                {
                    LayDanhSach();
                    txtsoThuoc.Text = gridView2.RowCount.ToString();
                }
                else
                    if (ktSoLuong < 1)
                    {
                        XtraMessageBox.Show("Thuốc đã hết trong kho!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                if (d > 0)// nếu trùng với mã thuốc đã tồn tại trước đó
                {
                    XtraMessageBox.Show("Thuốc này đã có trong danh sách hóa đơn,hãy nhập thêm số lượng!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                
            }
               
        }

        private void Xoa_Click(object sender, EventArgs e)
        {
            
            //int i =Convert.ToInt32( gridView2.GetRowCellValue(gridView2.FocusedRowHandle, "MaThuoc"));
            gridView2.DeleteSelectedRows();// xóa tại dòng đang dc chọn
            //gridView1.DeleteSelectedRows();
            txtsoThuoc.Text =gridView2.RowCount.ToString();// đếm số dòng trong gridview
        }
        NhatKy_Bll nhatKy_bll = new NhatKy_Bll();
        CTHoaDonBH_BLL ctbh_bll = new CTHoaDonBH_BLL();
        private void btnThanhToan_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            if (cob_MaHoaDon.Text != "")
            {
                try
                {
                    NhatKy_Public nk = new NhatKy_Public();
                    CTHoaDonBH_Public ct = new CTHoaDonBH_Public();
                    ct.MaHDBH = int.Parse(cob_MaHoaDon.Text);
                    for (int i = 0; i < gridView2.RowCount; i++)
                    {
                        Thuoc_Public thuoc = new Thuoc_Public();
                        ct.MaThuoc = Convert.ToInt32(gridView2.GetRowCellValue(i, "MaThuoc"));
                        thuoc.MaThuoc = Convert.ToInt32(gridView2.GetRowCellValue(i, "MaThuoc"));
                        string sql = "select * from tbl_Thuoc where MaThuoc='" + ct.MaThuoc + "'";
                        dt = thuoc_bll.taoBang(sql);
                        cob_SoLuongThuoc.DataSource = dt;
                        cob_SoLuongThuoc.DisplayMember = "SoLuongTon";
                        int soLuongBan = 0, soLuongTon = 0;
                        ct.SoLuong = Convert.ToInt32(gridView2.GetRowCellValue(i, "SoLuong"));
                        soLuongBan = ct.SoLuong;
                        soLuongTon = int.Parse(cob_SoLuongThuoc.Text);
                        thuoc.SoLuongTon = soLuongTon - soLuongBan;
                        ct.NgayBan = Convert.ToDateTime(dateTime_NgayBan.Text);
                        ct.GhiChu = gridView2.GetRowCellValue(i, "GhiChu").ToString();
                        ctbh_bll.insert_CTHoaDonBH(ct, ct, ct, ct, ct);
                        thuoc_bll.update_Thuoc_SoLuongBan(thuoc,thuoc);
                        string d = DateTime.Now.ToString();
                        Class_TrungGian tg = new Class_TrungGian();
                        nk.TaiKhoan = tg.TaiKhoan;
                        nk.NgayGio = d;
                        nk.DoiTuong = tg.DoiTuong;
                        nk.HanhDong = "Lập hóa đơn mới";
                        nk.MoTa = "Lập hóa đơn có Mã Hóa đơn: '" + cob_MaHoaDon.Text + "' gồm Mã Thuốc: '"+ct.MaThuoc+"'";
                        nhatKy_bll.insert_NhatKy(nk, nk, nk, nk, nk);
                    }
                    if (XtraMessageBox.Show("Lưu hóa đơn thành công!,Bạn có muốn In Hóa Đơn không?", "Thông Báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
                    {
                        In_HoaDon f = new In_HoaDon();
                        f.MaHoaDon=int.Parse(cob_MaHoaDon.Text);
                        f.ShowDialog();
                    }
                    
                    btn_LamMoi_Click(sender, e);
                    Xoa.Enabled = false;
                    btn_TinhTien.Enabled = false;
                    btnThanhToan.Enabled = false;
                    txt_KTraLuu.Text = "";
                }
                catch (Exception)
                {
                    XtraMessageBox.Show("Lưu hóa đơn không thành công.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                XtraMessageBox.Show("Bạn chưa nhập Mã hóa đơn","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                cob_MaHoaDon.Focus();
            }
           
        }

        public void xoa_Data()
        {
            for (int i = 0; i < gridView2.RowCount; i++)
            {
                gridView2.DeleteRow(i);
            }

        }
        private void btn_LamMoi_Click(object sender, EventArgs e)
        {
            gridView2.OptionsBehavior.Editable = true;
            cob_MaHoaDon.ResetText();
            cob_TenHoaDon.ResetText();
            cob_NhanVien.ResetText();
            cob_TenKhachHang.ResetText();
            txtsoThuoc.Text = "";
            txt_TongTien.ResetText();
            txt_SoLuong.Value = 1;
            txt_KTraLuu.Text = "";
            Xoa.Enabled = false;
            btnThanhToan.Enabled = false;
            btn_TinhTien.Enabled = false;
            cob_SoLuongThuoc.Text = "";
            //gridControl_DanhSachThuoc.DataSource = thuoc_bll.LayDuLieu();
            int i = 100;
            for(i=0;i<100;i++)
            {
            xoa_Data();
            }

        }

        private void btn_TinhTien_Click(object sender, EventArgs e)
        {

            int soluong;
            string tenthuoc;
            double giatien, tongtien = 0, tongphaitra = 0;

            for (int i = 0; i < gridView2.RowCount; i++)
            {
                tenthuoc = gridView2.GetRowCellValue(i, "TenThuoc").ToString();
                soluong = Convert.ToInt32(gridView2.GetRowCellValue(i, "SoLuong"));
                giatien = Convert.ToDouble(gridView2.GetRowCellValue(i, "GiaTien"));
                if (soluong <=0)
                {
                    XtraMessageBox.Show(" Số lượng của thuốc: '" + tenthuoc.ToString() + "' phải lớn hơn 0", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    txt_KTraLuu.Text = "0";
                    break;
                }
                else
                {
                    tongtien = tongtien + (soluong * giatien);
                    txt_KTraLuu.Text = "1";
                    
                }
            }
            tongphaitra = (tongtien * 10) / 100 + tongtien;// tính VAT 10%
            txt_TongTien.Text = tongphaitra.ToString();
            //gridView2.OptionsBehavior.Editable = false;
        }

        private void btn_Thoat_Click(object sender, EventArgs e)
        {
            if (XtraMessageBox.Show("Bạn có muốn thoát của sổ Lập Hóa Đơn không?", "Thông Báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                this.Close();
            }

        }

        private void btn_InHoaDon_Click(object sender, EventArgs e)
        {
            frm_InHoaDonBanThuoc f = new frm_InHoaDonBanThuoc();
            f.ShowDialog();
        }

        private void cob_MaHoaDon_Click(object sender, EventArgs e)
        {
            string sql = "select MaHDBH,TenHD from tbl_HoaDonBH where not exists (select MaHDBH from tbl_CTHoaDonBH where tbl_HoaDonBH.MaHDBH=tbl_CTHoaDonBH.MaHDBH) ";
            DataTable dt = new DataTable();
            dt = ctbh_bll.taoBang(sql);
            cob_MaHoaDon.DataSource = dt;
            cob_MaHoaDon.DisplayMember = "MaHDBH";
            cob_TenHoaDon.DataSource = dt;
            cob_TenHoaDon.DisplayMember = "TenHD";

        }

        private void cob_MaHoaDon_TextChanged(object sender, EventArgs e)
        {
            try
            {

                string sql = "SELECT    * from dbo.tbl_HoaDonBH INNER JOIN  dbo.tbl_KhachHang ON dbo.tbl_HoaDonBH.MaKH = dbo.tbl_KhachHang.MaKH INNER JOIN  dbo.tbl_NhanVien ON dbo.tbl_HoaDonBH.MaNV = dbo.tbl_NhanVien.MaNV where tbl_HoaDonBH.MaHDBH='" + cob_MaHoaDon.Text + "' ";
                DataTable dt = new DataTable();
                dt = ctbh_bll.taoBang(sql);
                cob_TenKhachHang.DataSource = dt;
                cob_TenKhachHang.DisplayMember = "TenKH";
                cob_NhanVien.DataSource = dt;
                cob_NhanVien.DisplayMember = "HoTen";
            }
            catch (Exception)
            { }
        }

        private void txtsoThuoc_TextChanged(object sender, EventArgs e)
        {
            if (txtsoThuoc.Text != "0")
            {
                Xoa.Enabled = true;
                btn_TinhTien.Enabled = true;
            }
            else
            {
                Xoa.Enabled = false;
                btn_TinhTien.Enabled = false;
            }
        }
        
        private void txt_TimKiem_TextChanged(object sender, EventArgs e)
        {
            Thuoc_Public t = new Thuoc_Public();
            t.TenThuoc = txt_TimKiem.Text;
            gridControl_DanhSachThuoc.DataSource = thuoc_bll.TimKiem_Thuoc_BanThuoc(t);
        }

        private void txt_KTraLuu_TextChanged(object sender, EventArgs e)
        {
            if (txt_KTraLuu.Text == "1")
                btnThanhToan.Enabled = true;
            else
                btnThanhToan.Enabled = false;
        }
        public void GetLoad(int load)
        { 
            txt_Load.Text = load.ToString();
        }
        private void btn_Them_Click(object sender, EventArgs e)
        {
            frm_BanThuoc_Them f = new frm_BanThuoc_Them();
            f.Flag = 0;
            f.ShowDialog();
        }

        private void btn_Sua_Click(object sender, EventArgs e)
        {
            frm_BanThuoc_Them f = new frm_BanThuoc_Them();
            f.Flag = 1;
            f.MaThuoc = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Mã Thuốc"));
            f.TenThuoc = gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Tên Thuốc").ToString();
            f.SoLuongTon = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Số Lượng"));
            f.DVT = gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Đơn Vị").ToString();
            f.TacDung = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Tác Dụng").ToString();
            f.GiaTien = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Giá Tiền").ToString();
            f.ShowDialog();
        }

        private void btn_Xem_Click(object sender, EventArgs e)
        {
            frm_BanThuoc_Them f = new frm_BanThuoc_Them();
            f.MaThuoc = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Mã Thuốc"));
            f.TenThuoc = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Tên Thuốc").ToString();
            f.SoLuongTon = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Số Lượng"));
            f.DVT = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Đơn Vị").ToString();
            f.TacDung = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Tác Dụng").ToString();
            f.GiaTien = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Giá Tiền").ToString();
            f.Flag = 2;
            f.ShowDialog();
        }

        private void btn_Refresh_Click(object sender, EventArgs e)
        {
            gridControl_DanhSachThuoc.DataSource = thuoc_bll.Load_Thuoc_BanThuoc();
        }

        private void txt_Load_TextChanged(object sender, EventArgs e)
        {
            if (txt_Load.Text == "1")
            {
                gridControl_DanhSachThuoc.DataSource = thuoc_bll.Load_Thuoc_BanThuoc();
                txt_Load.Text = "0";
            }
        }

        private void btn_MaHD_Click(object sender, EventArgs e)
        {

        }

    }
}